package api;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import lombok.SneakyThrows;
import model.Article;
import model.UserInfo;
import util.AppVar;
import util.DBUtils;
import util.ResultUtils;
import util.SessionUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/myartlist")
public class MyArticleListServlet extends HttpServlet {
    @SneakyThrows
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Article> list = new ArrayList<>();
        String msg = "未知错误";
        UserInfo userInfo = SessionUtils.getLoginUser(req);
        if(userInfo != null){
            //登录状态
            int uid = userInfo.getUid();
            if(uid > 0){
                //查询数据库得到文章列表
                //得到connection
                Connection connection = DBUtils.getConnection();
                //拼接sql
                String sql = "select * from article where uid=?";
                PreparedStatement statement = connection.prepareStatement(sql);
                statement.setInt(1,uid);
                ResultSet resultSet = statement.executeQuery();
                //将查询的结果添加到list
                while (resultSet.next()){
                    String context = resultSet.getString("context"); // 文章正文
                    Article article = new Article();
                    article.setAid(resultSet.getInt("aid"));
                    article.setTitle(resultSet.getString("title"));
                    article.setContext(context);
                    // 简介
                    int subLength = Integer.min(20, context.length());
                    article.setDesc(context.substring(0, subLength).replace("#",""));
                    String createtime = resultSet.getString("createtime");
                    article.setCreatetime(createtime.substring(0, createtime.lastIndexOf(".")));
                    article.setReadcount(resultSet.getInt("readcount"));
                    article.setUid(resultSet.getInt("uid"));
                    article.setState(resultSet.getInt("state"));
                    list.add(article);
                }
            }
            else{
                msg = "非法参数";
            }
        }
        else {
            msg = "未登录！";
        }

        resp.setContentType(AppVar.RESPONSE_CONTENTTYPE_JSON);
        resp.getWriter().println(JSONUtil.toJsonStr(ResultUtils.toResult(200,list,msg)));
    }
}
